import Vue from 'vue'

const jnpf = require('./utils/jnpf').default

import 'normalize.css/normalize.css' // a modern alternative to CSS resets

import Element from 'element-ui'
import './styles/element-variables.scss'
import './assets/scss/common.scss'

import '@/styles/index.scss' // global css
import './assets/scss/theme.scss' // 主题

import VXETable from 'vxe-table'
import 'vxe-table/lib/style.css'
import VXETablePluginElement from 'vxe-table-plugin-element'

// 引入 vxe-table pro
import './utils/vxe-table-pro.es6.min'
import './assets/vxe-pro/vxe-table-pro.min.css'

Vue.use(VXETable)
VXETable.use(VXETablePluginElement)
VXETable.interceptor.add('event.clearActived', (params, event) => {
  // 比如点击了某个组件的弹出层面板之后，此时被激活单元格不应该被自动关闭，通过返回 false 可以阻止默认的行为。
  console.log(event)
  if (!!event && event.target.className.indexOf('other-popper') > -1) {
    return false
  }
})


VXETable.setup({
	authId: 'wjazl4yyio5bqkz3',
  size: 'mini',
  table: {
    border: true,
    stripe: true,
    resizable: true,
    showOverflow: true,
    highlightHoverRow: true,
    highlightCurrentRow: true,
    scrollY: {
      rHeight: 32
    },
		// 鼠标配置
		// mouseConfig: {
		// 	selected: false,
		// 	area: true, // 是否开启鼠标单元格区域选取
		// 	extension: true // 是否开启鼠标点击区域内右下角扩展按钮（快捷键 Shift + 方向键扩大区域）
		// },
		// // 区域选取配置（只对 mouse-config.area 有效）
		// areaConfig: {
		// 	selectCellByHeader: true, // 点击列头是否选取当前列的所有单元格
		// 	extendByCopy: false, // 点击右下角扩展按钮，将被选取区域的值复制到扩展区域中（同时按住 shift 键可取消值复制功能）
		// 	extendByCalc: false // 当选取大于两行或两列时，扩展区域时将自动识别数字规则进行计算（同时按住 ctrl 键可取消值自动识别数字功能）
		// },
		// // 按键配置
		keyboardConfig: {
			isClip: true, // 是否开启（Ctrl + X 键、Ctrl + C 键、Ctrl + V 键）复制粘贴功能
			// isMerge: true, // 是否开开启（Ctrl + M 键）合并和取消合并功能
			// isFNR: true, // 是否开启（Ctrl + F 键、Ctrl + H 键）查找和替换功能
			// isEdit: true, // 是否开启（Esc 键、F2 键、任意键）单元格编辑功能
			// isTab: true, // 是否开启（Tab 键、Shift + Tab 键）单元格左右移动功能
			// isArrow: true, // 是否开启（方向键）单元格上下左右移动功能
			// isEnter: true, // 是否开启（Enter 键、Shift + Enter 键）单元格上下移动功能
			// isDel: false, // 是否开启（Delete 键、Backspace 键）清空单元格的值
			// isChecked: true, // 是否开启（Spacebar 键）切换复选框和单选框状态
			// enterToTab: true // 是否将回车键行为改成 Tab 键行为
		},
		// 复制粘贴配置项（只对 keyboard-config.isClip 有效）
		clipConfig: {
			isCopy: true, // 是否启用复制功能（快捷键 Ctrl + C 键）
			isCut: false, // 是否启用剪贴功能（快捷键 Ctrl + X 键）
			isPaste: false, // 是否启用粘贴功能（快捷键 Ctrl + V 键）
			isRowIncrement: false, // 是否启用行自增，当粘贴的行数超出表格时自动插入新行
			isColumnIncrement: false // 是否启用列自增，当粘贴的列数超出表格时自动插入新列
		},
  }
})

import App from './App'
import store from './store'
import router from './router'

import i18n from './lang' // internationalization
import './permission' // permission control
import './utils/error-log' // error log
import { message } from './utils/message';

import * as filters from './filters' // global filters

import Preview from "./utils/preview.js";
Vue.use(Preview)

// 自定义按钮权限指令
import permission from "@/directive/permission";
Vue.use(permission)

Vue.use(Element, {
  size: jnpf.storageGet('size') || 'small', // set element-ui default size
  i18n: (key, value) => i18n.t(key, value)
})
// 批量引入组件
import components from './components'
Vue.use(components)

// 添加实例属性
Object.assign(Vue.prototype, {
  define: require('./utils/define'), // 常量
  jnpf, // 公共方法
  formValidate: require('./utils/formValidate').default, // 表单验证
  $message: message
})

// 全局注册过滤器
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})

Vue.config.productionTip = false

const vm = new Vue({
  el: '#app',
  router,
  store,
  i18n,
  render: h => h(App)
})
export default vm